// 剪切板处理
class Clipboard {
    constructor(e) {
        this.event = e
        this.clipboardData = null
        this.__init()
        this.getContent = this.__getContent()
    }
    __init() {
        console.log('剪切板初始化')
        const e = this.event
        if(window.clipboardData && window.clipboardData.setData) {
            this.clipboardData = window.clipboardData
        } else {
            this.clipboardData = (e.originalEvent || e).clipboardData
        }
        if(!this.clipboardData) return
    }
    // 获取粘贴的文件
    __getClipboardFile(clipboardData) {
        if(!!clipboardData.items) {
            const items = clipboardData.items
            if(!items.length) return
            if(items && items.length) {
                for(let i = 0; i < clipboardData.types.length; i++) {
                    if(clipboardData.types[i] === 'Files') {
                        const file = items[i].getAsFile()
                        return file
                    }
                }
            }
        } else {
            return clipboardData.file[0]
        }
    }
    // 获取粘贴板内容
    __getContent() {
        const clipboardData = this.clipboardData
        const file = this.__getClipboardFile(clipboardData)
        if(file) {
            // 无文件类型的过滤掉
            if(!file.type) return
            if(file.type.match(/^image\//i)) {
                return {
                    type: 'image',
                    file: file
                }
            } else {
                return {
                    type: 'file',
                    file: file
                }
            }
        }
        // 文本类型
        const text = clipboardData.getData('text')
        return {
            type: 'text',
            text: text
        }
    }
    // 销毁
    destroy() {
        this.event = null
        this.clipboardData = null
        this.getContent = null
    }
}

export default e => new Clipboard(e)